using System;
using System.Collections.Generic;

namespace ExcelTemplateEngine.OpenXML
{
    /// <summary>
    /// Excel工作簿接口
    /// </summary>
    public interface IWorkbook : IDisposable
    {
        /// <summary>
        /// 工作表集合
        /// </summary>
        IList<IWorksheet> Worksheets { get; }
        
        /// <summary>
        /// 定义的名称集合
        /// </summary>
        IDefinedNames Names { get; }
        
        /// <summary>
        /// 共享字符串表
        /// </summary>
        ISharedStringTable SharedStrings { get; }
        
        /// <summary>
        /// 样式表
        /// </summary>
        IStylesheet Styles { get; }
        
        /// <summary>
        /// 添加工作表
        /// </summary>
        /// <param name="name">工作表名称</param>
        /// <returns>新创建的工作表</returns>
        IWorksheet AddWorksheet(string name);
        
        /// <summary>
        /// 获取工作表
        /// </summary>
        /// <param name="name">工作表名称</param>
        /// <returns>工作表对象，如果不存在则返回null</returns>
        IWorksheet? GetWorksheet(string name);
        
        /// <summary>
        /// 删除工作表
        /// </summary>
        /// <param name="name">工作表名称</param>
        /// <returns>是否删除成功</returns>
        bool RemoveWorksheet(string name);
        
        /// <summary>
        /// 内部的OpenXML文档对象（供高级操作使用）
        /// </summary>
        object InternalDocument { get; }
    }
}